#include <iostream>
using namespace std;

#include <boost/config.hpp>
#include <boost/type_traits.hpp>

template <int N, int M>
struct meta_func1 {
    //BOOST_STATIC_CONSTANT(int, v = N + M);
    static const int a = M * N;
};

int main()
{
    cout << "---- test of meta program ----" << endl;
    cout << meta_func1<3, 4>::a << endl;
    typedef unsigned int uint;
    typedef double db;
#define Name int[10]
    cout << boost::is_integral<uint>::value << endl;
    cout << boost::is_integral<db>::value << endl;
    cout << boost::is_array<Name>::value << endl;
    return 0;
}
